package com.kgc.mapper;

import com.kgc.bean.User;
import com.kgc.domain.UserExample;
import org.apache.ibatis.annotations.*;

import java.util.Date;
import java.util.List;

/**
 * @Author：周申宇 <p>
 * @Date:2021/6/20 14:26
 * <p>
 * @Decription:  用户信息
 */
@Mapper
public interface UserMapper {

    long countByExample(UserExample example);

    int deleteByExample(UserExample example);

    int deleteByPrimaryKey(Integer userId);

    int insert(User record);

    int insertSelective(User record);

    List<User> selectByExample(UserExample example);

    User selectByPrimaryKey(Integer userId);

    int updateByExampleSelective(@Param("record") User record, @Param("example") UserExample example);

    int updateByExample(@Param("record") User record, @Param("example") UserExample example);

    int updateByPrimaryKeySelective(User record);

    int updateByPrimaryKey(User record);


    /**
    * @author YANQINGCHAO
    * @date 2021/6/21
    * @return
    * @descrption： 根据用户id查询用户积分
    */
    @Select("select integral from `user` where user_id = #{userId}")
    Integer queryIntegralById(Integer userId);
    /**
    * @author YANQINGCHAO
    * @date 2021/6/21
    * @return
    * @descrption： 将用户结算的积分更新到数据库中
    */
    @Update("update `user` set integral = #{integral} where user_id=#{userId}")
    Integer updateIntegral(@Param("userId") Integer userId, @Param("integral") Integer integral);

    /**
    * @author YANQINGCHAO
    * @date 2021/6/21
    * @return
    * @descrption： 根据用户id查询用户信息
    */
    @Select("select * from `user` where user_id = #{userId}")
    User selectUserById(Integer userId);
    /**
     * @author YANQINGCHAO
     * @date 2021/6/23
     * @return
     * @descrption： 查询最后签到时间
     */
    @Select("select sign_last_time from `user` where user_id=#{userId}")
    Date queryLastSignDate(Integer userId);
    /**
     * @author YANQINGCHAO
     * @date 2021/6/23
     * @return
     * @descrption： 查询连续签到天数
     */
    @Select("select sign_days from `user` where user_id=#{userId}")
    Integer querySignDays(Integer userId);
    /**
    * @author YANQINGCHAO
    * @date 2021/6/23
    * @return
    * @descrption： 更新用户签到信息
    */
    @Update("update `user` set sign_last_time = #{date} , sign_days =#{signDays} , integral = #{integral} where user_id =#{userId} ")
    Integer updateSignIn(@Param("date") Date date, @Param("signDays") Integer signDays, @Param("integral") Integer integral, @Param("userId") Integer userId);
    /**
    * @author YANQINGCHAO
    * @date 2021/6/23
    * @return
    * @descrption： 将用户的签到信息更新到用户签到流水表中
    */
    @Insert("insert into `sagin_flowing`(userId,sagin_day,integral) VALUES(#{userId},#{date},#{integral}) ")
    Integer insertSignInfo(@Param("userId") Integer userId, @Param("date") Date date, @Param("integral") Integer integral);
}
